#include <reg52.h>

sbit ADDR0 = P1 ^ 0; // 通过跳线器 把p1^0引脚和38译码器的ADDR0口连接起来  数据位
sbit ADDR1 = P1 ^ 1;    // 通过跳线器 把p1^1引脚和38译码器的ADDR1口连接起来  数据位
sbit ADDR2 = P1 ^ 2;    // 通过跳线器 把p1^2引脚和38译码器的ADDR2口连接起来  数据位
sbit ADDR3 = P1 ^ 3;    // 通过跳线器 把p1^3引脚和38译码器的ADDR3口连接起来   使能ENLED=0，ADDR3=1 固定
sbit ENLED = P1 ^ 4;    // 使能ENLED=0，ADDR3=1 固定

void main()
{
    unsigned int i = 0;
    unsigned char cnt = 0; //  定义循环变量cnt，用于移位控制
    ENLED = 0;             // 使能ENLED=0，ADDR3=1 固定
    ADDR3 = 1;             // 使能ENLED=0，ADDR3=1 固定
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 1; // 111->1111 1110  使得LED6为低电平  LED正级接通

    while (1)
    {
        P0 = ~(0x01 << cnt); // cnt左移1位后 赋值给P0
        for (i = 0; i < 20000; i++)
            cnt++;
        if (cnt >= 8)
        {
            cnt = 0;
        }
    }
}
